iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
Vue.js

Vue 新手學習紀錄系列 第 16

Day 16 | Mitt 跨元件傳遞資料

  • 分享至 

  • xImage
  •  

今天直接大忘記qaq
翻了一下筆記決定寫跨元件資料傳遞的部分,直接看例子吧
<card-emit></card-emit> 中的資料傳遞到 <card-on></card-on> 中,流程如下:

  • card-emit 按下按鈕 → emitter.emit('sendProduct', this.product)
  • card-on 透過 emitter.on('sendProduct', ...) 監聽事件
  • 接收後更新自己的 item,並顯示在畫面上
<card-on></card-on>
<card-emit></card-emit>
<script type="module">
	import 'https://unpkg.com/mitt/dist/mitt.umd.js' //import mitt
	
	const emitter = mitt();
	const app = Vue.createApp({});
	
	app.component('card-emit',{
		data(){
			return {
				product: {
					name: 'pancake',
					price: 100,
					vegan: false,
				},	
			}
		},
		methods: {
			sendData(){
				//emitter.emit(事件名稱, 要傳的參數)
				emitter.emit('sendProduct', this.product);
			}
		},
		template: `<div class="card">
			<div class="card-body">
				<button @click="sendData">送出</button>
			</div>
		</div>`
	});
	
	app.component('card-on',{
		data(){
			return {
				item: {},
			}
		},
		created() {
			emitter.on('sendProduct', (data) => {
				this.item = data;
			});
		},
		template: `<div class="card">
			<div class="card-body">
				{{item}}
			</div>
		</div>`
	})
</script>

上一篇
Day 15 | Slot 是什麼
下一篇
Day 17 | Vue 部署到 Github Pages 上
系列文
Vue 新手學習紀錄24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言